package com.ffcs.crmd.tsp.server.config;

import com.ffcs.crmd.tsp.api.netty.INettyConfigServer;

/**
 * 
 * 功能说明:netty配置
 *
 * @author ZHONGFUHUA
 * 
 * @since 1.0.0-SNAPSHOT
 *
 */
public class NettyConfig implements INettyConfigServer{
    
    /**
     * 信号量，异步调用情况会使用，防止本地Netty缓存请求过多
     */
    private int permitsOneway                   = 60000;
    
    /**
     * 信号量，Oneway情况会使用，防止本地Netty缓存请求过多
     */
    private int permitsAsync                    = 60000;
    
    /**
     * netty服务器端口
     */
    private int listenPort                      = 1314;
    
    /**
     * 服务端IDLE事件超时时间
     */
    private int serverChannelMaxIdleTimeSeconds = 120;
    
    /**
     * 发送缓冲器大小
     */
    private int socketSndBufSize                = 131072;
    
    /**
     * 接收缓冲器大小
     */
    private int socketRcvBufSize                = 131072;
    
    /**
     * 服务端处理请求线程池大小
     */
    private int processorExecutorThreads        = 100;
    
    /**
     * 服务端回调线程池大小
     */
    private int callbackExecutorThreads         = 100;
    
    /**
     * IO线程处理线程池
     */
    private int selectorThreads                 = 4;
    
    /**
     * 耗时请求处理线程池
     */
    private int workGroupThreads                = 8;
    
    /**
     * 功能说明: 获取netty服务器端口
     *
     * @return listenPort netty服务器端口
     */
    public int getListenPort() {
        return listenPort;
    }
    
    /**
     * 功能说明: 设置netty服务器端口
     *
     * @param listenPort netty服务器端口
     */
    public void setListenPort(int listenPort) {
        this.listenPort = listenPort;
    }
    
    /**
     * 功能说明: 获取服务端IDLE事件超时时间
     *
     * @return serverChannelMaxIdleTimeSeconds 服务端IDLE事件超时时间
     */
    public int getServerChannelMaxIdleTimeSeconds() {
        return serverChannelMaxIdleTimeSeconds;
    }
    
    /**
     * 功能说明: 设置服务端IDLE事件超时时间
     *
     * @param serverChannelMaxIdleTimeSeconds 服务端IDLE事件超时时间
     */
    public void setServerChannelMaxIdleTimeSeconds(int serverChannelMaxIdleTimeSeconds) {
        this.serverChannelMaxIdleTimeSeconds = serverChannelMaxIdleTimeSeconds;
    }
    
    /**
     * 功能说明: 获取服务端处理请求线程池大小
     *
     * @return processorExecutorThreads 服务端处理请求线程池大小
     */
    public int getProcessorExecutorThreads() {
        return processorExecutorThreads;
    }
    
    /**
     * 功能说明: 设置服务端处理请求线程池大小
     *
     * @param processorExecutorThreads 服务端处理请求线程池大小
     */
    public void setProcessorExecutorThreads(int processorExecutorThreads) {
        this.processorExecutorThreads = processorExecutorThreads;
    }
    
    /**
     * 功能说明: 获取服务端回调线程池大小
     *
     * @return callbackExecutorThreads 服务端回调线程池大小
     */
    public int getCallbackExecutorThreads() {
        return callbackExecutorThreads;
    }
    
    /**
     * 功能说明: 设置服务端回调线程池大小
     *
     * @param callbackExecutorThreads 服务端回调线程池大小
     */
    public void setCallbackExecutorThreads(int callbackExecutorThreads) {
        this.callbackExecutorThreads = callbackExecutorThreads;
    }
    
    /**
     * 功能说明: 获取信号量，异步调用情况会使用，防止本地Netty缓存请求过多
     *
     * @return permitsOneway 信号量，异步调用情况会使用，防止本地Netty缓存请求过多
     */
    public int getPermitsOneway() {
        return permitsOneway;
    }
    
    /**
     * 功能说明: 设置信号量，异步调用情况会使用，防止本地Netty缓存请求过多
     *
     * @param permitsOneway 信号量，异步调用情况会使用，防止本地Netty缓存请求过多
     */
    public void setPermitsOneway(int permitsOneway) {
        this.permitsOneway = permitsOneway;
    }
    
    /**
     * 功能说明: 获取信号量，Oneway情况会使用，防止本地Netty缓存请求过多
     *
     * @return permitsAsync 信号量，Oneway情况会使用，防止本地Netty缓存请求过多
     */
    public int getPermitsAsync() {
        return permitsAsync;
    }
    
    /**
     * 功能说明: 设置信号量，Oneway情况会使用，防止本地Netty缓存请求过多
     *
     * @param permitsAsync 信号量，Oneway情况会使用，防止本地Netty缓存请求过多
     */
    public void setPermitsAsync(int permitsAsync) {
        this.permitsAsync = permitsAsync;
    }
    
    /**
     * 功能说明: 获取发送缓冲器大小
     *
     * @return socketSndBufSize 发送缓冲器大小
     */
    public int getSocketSndBufSize() {
        return socketSndBufSize;
    }
    
    /**
     * 功能说明: 设置发送缓冲器大小
     *
     * @param socketSndBufSize 发送缓冲器大小
     */
    public void setSocketSndBufSize(int socketSndBufSize) {
        this.socketSndBufSize = socketSndBufSize;
    }
    
    /**
     * 功能说明: 获取接收缓冲器大小
     *
     * @return socketRcvBufSize 接收缓冲器大小
     */
    public int getSocketRcvBufSize() {
        return socketRcvBufSize;
    }
    
    /**
     * 功能说明: 设置接收缓冲器大小
     *
     * @param socketRcvBufSize 接收缓冲器大小
     */
    public void setSocketRcvBufSize(int socketRcvBufSize) {
        this.socketRcvBufSize = socketRcvBufSize;
    }
    
    /**
     * 功能说明: 获取IO线程处理线程池
     *
     * @return selectorThreads IO线程处理线程池
     */
    public int getSelectorThreads() {
        return selectorThreads;
    }
    
    /**
     * 功能说明: 设置IO线程处理线程池
     *
     * @param selectorThreads IO线程处理线程池 
     */
    public void setSelectorThreads(int selectorThreads) {
        this.selectorThreads = selectorThreads;
    }
    
    /**
     * 功能说明: 获取耗时请求处理线程池
     *
     * @return workGroupThreads 耗时请求处理线程池
     */
    public int getWorkGroupThreads() {
        return workGroupThreads;
    }
    
    /**
     * 功能说明: 设置耗时请求处理线程池
     *
     * @param workGroupThreads 耗时请求处理线程池 
     */
    public void setWorkGroupThreads(int workGroupThreads) {
        this.workGroupThreads = workGroupThreads;
    }
    
}
